package br.com.bestOffer.memoriaRam.bean;

import java.util.Arrays;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.bestOffer.ejb.fabricante.entity.Fabricante;
import br.com.bestOffer.ejb.fabricante.service.FabricanteServiceBean;
import br.com.bestOffer.ejb.memoriaRam.entity.MemoriaRam;
import br.com.bestOffer.ejb.memoriaRam.service.MemoriaRamServiceBean;
import br.com.bestOffer.enumerator.VersaoMemoriaRam;
import br.com.bestOffer.exceptions.BestOfferListaVaziaException;
import br.com.bestOffer.util.BaseManagedBean;
import br.com.bestOffer.util.BestOfferConstantes;
import br.com.bestOffer.util.Constantes;
import br.com.bestOffer.util.WebResources;

@ManagedBean
@ViewScoped
public class PesquisaAvancadaMemoriaManagedBean extends BaseManagedBean{

	private static final long serialVersionUID = -240929758719624457L;
	
	@EJB
	private FabricanteServiceBean fabricanteServiceBean;
	
	@EJB
	private MemoriaRamServiceBean memoriaRamServiceBean;
	
	private List<Fabricante> listaFabricantes;
	
	private List<MemoriaRam> listaMemoria;
	
	private String idFabricante;
	private String idSoquete;
	private String modelo;
	private VersaoMemoriaRam versaoMemoriaRam;
	
	@PostConstruct
	public void init() throws BestOfferListaVaziaException{
		listaFabricantes = fabricanteServiceBean.listarTodosFabricantes();
		listaMemoria = memoriaRamServiceBean.listarMemoriasRam();
	}
	
	public void pesquisarMemoria(){
		listaMemoria = memoriaRamServiceBean.pesquisarMemoria(idFabricante, versaoMemoriaRam, modelo);
		
		if(listaMemoria.isEmpty()){
			addMessageInfo("Nenhum resultado encontrado!");
		}
	}
	
	public String verAnuncios(MemoriaRam memoria){
		WebResources.getFlashContext().put(Constantes.PRODUTO, memoria);
		return BestOfferConstantes.ANUNCIOS_MEMORIA_RAM;
	}
	
	public List<VersaoMemoriaRam> getListaVersaoMemoriaRam() {
		return Arrays.asList(VersaoMemoriaRam.values());
	}
	
	public String getIdFabricante() {
		return idFabricante;
	}

	public void setIdFabricante(String idFabricante) {
		this.idFabricante = idFabricante;
	}

	public String getIdSoquete() {
		return idSoquete;
	}

	public void setIdSoquete(String idSoquete) {
		this.idSoquete = idSoquete;
	}

	public VersaoMemoriaRam getVersaoMemoriaRam() {
		return versaoMemoriaRam;
	}

	public void setVersaoMemoriaRam(VersaoMemoriaRam versaoMemoriaRam) {
		this.versaoMemoriaRam = versaoMemoriaRam;
	}

	public List<Fabricante> getListaFabricantes() {
		return listaFabricantes;
	}

	public void setListaFabricantes(List<Fabricante> listaFabricantes) {
		this.listaFabricantes = listaFabricantes;
	}

	public List<MemoriaRam> getListaMemoria() {
		return listaMemoria;
	}

	public void setListaMemoria(List<MemoriaRam> listaMemoria) {
		this.listaMemoria = listaMemoria;
	}

	public String getModelo() {
		return modelo;
	}
	
	public void setModelo(String modelo) {
		this.modelo = modelo;
	}

	
	
	
}
